package com.yongoe.ecy.firstNode.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yongoe.ecy.firstNode.entity.FirstNode;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yongoe.ecy.firstNode.entity.GraphData;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * 一级节点
 *
 * @author monad
 * @since 2024/03/10
 */
@Mapper
public interface FirstNodeMapper extends BaseMapper<FirstNode> {

    @DS("mysql")
    Page<FirstNode> getFirstNodeByPage(Page<FirstNode> page, @Param("firstNode") FirstNode firstNode);

    @DS("neo4j")
    // 新增一级节点
    Long addFirstNode(FirstNode firstNode);

    @DS("neo4j")
    // 更新一级节点
    void updateFirstNode(FirstNode firstNode);

    @DS("neo4j")
    // 批量删除一级节点(neo4j)
    void deleteFirstNodes(Long[] ids);

    @DS("mysql")
    // 批量删除一级节点(mysql)
    void deleteByIds(Long[] ids);

    @DS("neo4j")
    // 删除全部一级节点(neo4j)
    void deleteAllNode();

    @DS("mysql")
    // 删除全部一级节点(mysql)
    void removeAll();

    // 查询子节点
    @DS("neo4j")
    int selectChild(Long[] ids);

    @DS("neo4j")
    List<GraphData> getNodeGraph(Long nodeId);
}
